<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>仪表盘 on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/%E4%BB%AA%E8%A1%A8%E7%9B%98/</link><description>Recent content in 仪表盘 on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 25 Sep 2023 00:00:00 +0800</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/%E4%BB%AA%E8%A1%A8%E7%9B%98/index.xml" rel="self" type="application/rss+xml"/><item><title>Grafana 可视化面板实战：从部署到匿名访问、中文环境与 InfluxDB 数据源</title><link>https://liangweidonggood.github.io/p/grafana-ke-shi-hua-mian-ban-shi-zhan/</link><pubDate>Mon, 25 Sep 2023 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/grafana-ke-shi-hua-mian-ban-shi-zhan/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/grafana-ke-shi-hua-mian-ban-shi-zhan/image/cover.jpg" alt="Featured image of post Grafana 可视化面板实战：从部署到匿名访问、中文环境与 InfluxDB 数据源" /&gt;&lt;p&gt;监控数据再多，没人看就是&amp;quot;装个寂寞&amp;quot;。Grafana 把时序数据（Prometheus、InfluxDB、Elasticsearch、Loki&amp;hellip;）变成&amp;quot;能拖时间范围、能叠多源、能做告警&amp;quot;的可视化面板，几乎是云原生时代仪表盘的事实标准。这篇文章把 Grafana 容器化部署、初始密码、中文环境、匿名访问、配置持久化这些&amp;quot;装上就完事但装的时候总忘&amp;quot;的事整理成一篇。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;阅读对象&lt;/strong&gt;：刚把 Prometheus 装上、想接 Grafana 看图的开发者；或 Grafana 已经跑起来但中文乱码/匿名访问开不了的运维同学&lt;br&gt;
&lt;strong&gt;覆盖范围&lt;/strong&gt;：Grafana 10 容器化部署、初始密码、InluxDB 数据源、匿名访问（grafana.ini 持久化）、时区与中文环境、注意事项&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="一为什么是-grafana"&gt;一、为什么是 Grafana
&lt;/h2&gt;&lt;p&gt;Grafana 不是&amp;quot;唯一&amp;quot;的仪表盘，但它的优势是&lt;strong&gt;面板能复用到极致&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;多数据源&lt;/strong&gt;：Prometheus、InfluxDB、Elasticsearch、MySQL、PostgreSQL、Loki、Tempo&amp;hellip; 同一个 Dashboard 拉多个源&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;导入社区仪表盘&lt;/strong&gt;：到 &lt;a class="link" href="https://grafana.com/grafana/dashboards" target="_blank" rel="noopener"
 &gt;https://grafana.com/grafana/dashboards&lt;/a&gt; 搜 ID，30 秒装好一套完整图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;告警与通知&lt;/strong&gt;：面板里就能定义 alert rule，发邮件/Webhook/钉钉&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多租户&lt;/strong&gt;：Organization / Team / Folder 权限隔离&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;插件丰富&lt;/strong&gt;：官方/社区插件扩展数据源、图表类型、面板组件&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;When to use&lt;/strong&gt;：监控要&amp;quot;展示给人看&amp;quot;时，Grafana 几乎必装。如果你的数据是商业 BI 类（要做月度报表、维度下钻），Grafana 就不是首选了——Superset / Metabase 更合适。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="二容器化部署"&gt;二、容器化部署
&lt;/h2&gt;&lt;h3 id="21-最简单一行"&gt;2.1 最简单一行
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker pull grafana/grafana:10.0.1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d --restart&lt;span class="o"&gt;=&lt;/span&gt;always --name&lt;span class="o"&gt;=&lt;/span&gt;grafana -p 3000:3000 grafana/grafana
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;访问 &lt;code&gt;http://{{HOST}}:3000&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;初始账号：&lt;code&gt;admin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;初始密码：&lt;code&gt;admin&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第一次登录会强制要求改密码（生产环境必须改）。&lt;/p&gt;
&lt;h3 id="22-时区与中文环境"&gt;2.2 时区与中文环境
&lt;/h3&gt;&lt;p&gt;Grafana 默认时区是 UTC，中文界面也有可能因为字体不全出现&amp;quot;豆腐块&amp;quot;。通过环境变量解决：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d --restart&lt;span class="o"&gt;=&lt;/span&gt;always --name&lt;span class="o"&gt;=&lt;/span&gt;grafana &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e &lt;span class="nv"&gt;TZ&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Asia/Shanghai &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e &lt;span class="nv"&gt;LANG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;zh_CN.UTF-8 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 3000:3000 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; grafana/grafana
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;TZ 优先级&lt;/strong&gt;：Grafana 启动时会把 &lt;code&gt;TZ&lt;/code&gt; 写到容器内 &lt;code&gt;/etc/localtime&lt;/code&gt;，但&lt;strong&gt;部分版本&lt;/strong&gt;仍要靠挂载宿主机时区文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-v /etc/localtime:/etc/localtime:ro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;保险起见两个都加。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="23-host-网络模式"&gt;2.3 host 网络模式
&lt;/h3&gt;&lt;p&gt;如果 Grafana 和后端服务在同一台机器，用 &lt;code&gt;--net=host&lt;/code&gt; 可以避免端口映射带来的 trace 调用异常：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d --restart&lt;span class="o"&gt;=&lt;/span&gt;always --name&lt;span class="o"&gt;=&lt;/span&gt;grafana --net&lt;span class="o"&gt;=&lt;/span&gt;host &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e &lt;span class="nv"&gt;TZ&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Asia/Shanghai -e &lt;span class="nv"&gt;LANG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;zh_CN.UTF-8 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; grafana/grafana
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="三添加数据源"&gt;三、添加数据源
&lt;/h2&gt;&lt;p&gt;Grafana 的核心是&amp;quot;数据源 + 仪表盘&amp;quot;。进入 &lt;code&gt;Configuration → Data Sources → Add data source&lt;/code&gt;，能看到几十种数据源选项。&lt;/p&gt;
&lt;h3 id="31-prometheus"&gt;3.1 Prometheus
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Type: &lt;code&gt;Prometheus&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;URL: &lt;code&gt;http://{{PROM_HOST}}:9090&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;其它默认即可&lt;/li&gt;
&lt;li&gt;点击 &lt;code&gt;Save &amp;amp; test&lt;/code&gt;，绿色 &lt;code&gt;Data source is working&lt;/code&gt; 出现即成功&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="32-influxdb时序数据库"&gt;3.2 InfluxDB（时序数据库）
&lt;/h3&gt;&lt;p&gt;InfluxDB v1/v2 的接入参数略有不同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Type: &lt;code&gt;InfluxDB&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;URL: &lt;code&gt;http://{{INFLUXDB_HOST}}:8086&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Database: 填库名&lt;/li&gt;
&lt;li&gt;User / Password: 填凭据&lt;/li&gt;
&lt;li&gt;HTTP Header: 如 &lt;code&gt;Authorization: Token {{TOKEN}}&lt;/code&gt;（v2 必需）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;测试连接成功后，在 Explore 面板里写 Flux 或 InfluxQL 即可查数据。&lt;/p&gt;
&lt;h3 id="33-loki日志"&gt;3.3 Loki（日志）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Type: &lt;code&gt;Loki&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;URL: &lt;code&gt;http://{{LOKI_HOST}}:3100&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;详细看 &lt;a class="link" href="https://liangweidonggood.github.io/p/loki-promtail-ri-zhi-jia-gou/" &gt;Loki + Promtail 日志架构&lt;/a&gt; 一文。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="34-人员定位面板业务-demo"&gt;3.4 人员定位面板（业务 Demo）
&lt;/h3&gt;&lt;p&gt;早期有人拿 Grafana 做过 UWB/蓝牙定位的&amp;quot;实时位置面板&amp;quot;——把人员坐标入库到 InfluxDB，Grafana 用 &lt;code&gt;geomap&lt;/code&gt; / &lt;code&gt;table&lt;/code&gt; / &lt;code&gt;stat&lt;/code&gt; 面板做实时展示。这种&amp;quot;业务可视化&amp;quot;用法比传统 BI 轻量很多，配置简单、刷新及时。&lt;/p&gt;
&lt;h2 id="四匿名访问"&gt;四、匿名访问
&lt;/h2&gt;&lt;p&gt;生产环境往往需要&amp;quot;未登录用户也能看图&amp;quot;——大屏监控、嵌入式展示、给非技术人员查指标。Grafana 通过 &lt;code&gt;grafana.ini&lt;/code&gt; 里的 &lt;code&gt;[auth.anonymous]&lt;/code&gt; 段开启。&lt;/p&gt;
&lt;h3 id="41-直接改容器内配置"&gt;4.1 直接改容器内配置
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; -it grafana /bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vi /etc/grafana/grafana.ini
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;找到 &lt;code&gt;[auth.anonymous]&lt;/code&gt; 段，修改：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[auth.anonymous]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# enable anonymous access&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;enabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# specify organization name that should be used for unauthenticated users&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;org_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;Main Org.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# specify role for unauthenticated users&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;org_role&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;Viewer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# mask the Grafana version number for unauthenticated users&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;hide_version&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;坑&lt;/strong&gt;：发现改不了——容器内 &lt;code&gt;/etc/grafana/grafana.ini&lt;/code&gt; 在某些镜像版本是只读，必须停掉容器后挂载出来改（见 4.2）。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="42-配置持久化推荐"&gt;4.2 配置持久化（推荐）
&lt;/h3&gt;&lt;p&gt;把 &lt;code&gt;grafana.ini&lt;/code&gt; 复制出来，挂载进容器：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p /home/docker/grafana/conf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker cp grafana:/etc/grafana/grafana.ini /home/docker/grafana/conf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vim /home/docker/grafana/conf/grafana.ini
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动时挂载：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d --restart&lt;span class="o"&gt;=&lt;/span&gt;always --name&lt;span class="o"&gt;=&lt;/span&gt;grafana &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e &lt;span class="nv"&gt;TZ&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Asia/Shanghai -e &lt;span class="nv"&gt;LANG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;zh_CN.UTF-8 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 3000:3000 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v /home/docker/grafana/conf/grafana.ini:/etc/grafana/grafana.ini &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; grafana/grafana
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或 docker-compose：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;grafana&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;grafana&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;grafana/grafana:latest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;always&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;TZ=Asia/Shanghai&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;LANG=zh_CN.UTF-8&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="m"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;3000&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;/home/docker/grafana/conf/grafana.ini:/etc/grafana/grafana.ini&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;改完配置要重启&lt;/strong&gt;：&lt;code&gt;docker restart grafana&lt;/code&gt; 让新配置生效。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="五推荐仪表盘dashboard-id"&gt;五、推荐仪表盘（Dashboard ID）
&lt;/h2&gt;&lt;p&gt;到 &lt;a class="link" href="https://grafana.com/grafana/dashboards" target="_blank" rel="noopener"
 &gt;https://grafana.com/grafana/dashboards&lt;/a&gt; 搜 ID 即可导入：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;监控对象&lt;/th&gt;
					&lt;th&gt;推荐 Dashboard ID&lt;/th&gt;
					&lt;th&gt;用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Linux 主机&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;11074&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Node Exporter Full（CPU/内存/磁盘/网络/内核）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Windows 主机&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;10467&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Windows 主机全量指标&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;MySQL&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;7362&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;MySQL Overview（连接/QPS/慢查询/缓冲池）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Docker 容器&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;10619&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;cAdvisor（容器 CPU/内存/网络/IO）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Redis&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;11835&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Redis 监控&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Nginx&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;9614&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Nginx 日志/请求/状态码分析&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JVM&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;4701&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Java 应用堆/线程/GC&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;导入流程&lt;/strong&gt;：Grafana → &lt;code&gt;+&lt;/code&gt; → &lt;code&gt;Import&lt;/code&gt; → 输入 Dashboard ID → 选数据源 → 完成。约 30 秒就能看到十几张图。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="六踩坑清单"&gt;六、踩坑清单
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;改 &lt;code&gt;grafana.ini&lt;/code&gt; 不生效&lt;/strong&gt;——容器内文件只读，参考 4.2 挂载出来&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;忘记初始密码&lt;/strong&gt;——容器没挂载数据库时，数据存在容器内 &lt;code&gt;/var/lib/grafana&lt;/code&gt;。&lt;code&gt;docker volume rm&lt;/code&gt; 重置&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中文显示豆腐块&lt;/strong&gt;——字体不全，加 &lt;code&gt;-e LANG=zh_CN.UTF-8&lt;/code&gt; + 主机字体 &lt;code&gt;fonts-noto-cjk&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;时间不对&lt;/strong&gt;——时区没设对，Grafana 默认 UTC，业务日志要 &lt;code&gt;Asia/Shanghai&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;导入仪表盘数据为空&lt;/strong&gt;——Dashboard 自带数据源变量 &lt;code&gt;DS_PROMETHEUS&lt;/code&gt;，导入时要选实际的数据源&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;大屏刷新卡顿&lt;/strong&gt;——Dashboard 太多 Panel、Datasource 查询慢、Chrome 内存爆。优化方向：减少 Panel 数量、降低刷新频率、用 &lt;code&gt;time range from&lt;/code&gt; 限制数据范围&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="七2024-视角补充"&gt;七、2024+ 视角补充
&lt;/h2&gt;&lt;p&gt;本文写于 2023-09，2024-2026 期间 Grafana 关键演进：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Grafana 11.x&lt;/strong&gt;（2024）+ &lt;strong&gt;Grafana 12.x&lt;/strong&gt;（2025）：&lt;strong&gt;Drilldown / Explore 全面重构&lt;/strong&gt;、&lt;strong&gt;Scene 框架&lt;/strong&gt;（App SDK）让自定义面板开发更轻量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grafana Loki 3.x&lt;/strong&gt;（2024-2026）配合：对象存储全面支持 S3 兼容、GCS、Azure Blob，&lt;strong&gt;日志查询性能 10x 提升&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grafana Mimir / Pyroscope / Beyla&lt;/strong&gt;：Metrics / Continuous Profiling / eBPF Auto-instrumentation 一站式可观测&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grafana 11+ IRM（Incident Response Management）&lt;/strong&gt;：内置 oncall 值班 / 事件管理 / Postmortem 模板，&lt;strong&gt;逐步替代 PagerDuty / Opsgenie 部分场景&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 助手 Grafana LLM&lt;/strong&gt;（2024-Q3 试验）：用自然语言生成 PromQL，2025 起仍是早期功能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grafana Faro&lt;/strong&gt;（RUM）：Web 端真实用户监控 SDK，前端可观测性补齐&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;实战建议（2025-2026 视角）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Grafana 11.x / 12.x + Loki 3.x + Prometheus 3.x + Mimir&lt;/strong&gt; 是云原生可观测的&amp;quot;标准四件套&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;K8s 场景&lt;/strong&gt;优先 Grafana Helm Chart 一键部署&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;国产可观测&lt;/strong&gt;（夜莺 / FlashDuty）2024+ 与 Grafana 体系深度集成，可作为 oncall 补充&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="八参考资料"&gt;八、参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Grafana 官方文档：https://grafana.com/docs/grafana/latest/&lt;/li&gt;
&lt;li&gt;社区仪表盘：https://grafana.com/grafana/dashboards&lt;/li&gt;
&lt;li&gt;配置文件参考：https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="下一步"&gt;下一步
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;监控那层用 Prometheus？→ 看 &lt;a class="link" href="https://liangweidonggood.github.io/p/prometheus-jian-kong-gao-jing-ti-xi/" &gt;Prometheus 监控告警体系&lt;/a&gt; 一文&lt;/li&gt;
&lt;li&gt;日志也想接 Grafana？→ &lt;a class="link" href="https://liangweidonggood.github.io/p/loki-promtail-ri-zhi-jia-gou/" &gt;Loki + Promtail 日志架构&lt;/a&gt; 一文&lt;/li&gt;
&lt;li&gt;不想自己拼装？→ &lt;a class="link" href="https://liangweidonggood.github.io/p/hertzbeat-qing-liang-jian-kong-gao-jing/" &gt;HertzBeat 轻量监控告警&lt;/a&gt; 把监控+告警+可视化打包到一容器&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>