<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>grafana | 伪架构师</title>
    <link>/tags/grafana/</link>
      <atom:link href="/tags/grafana/index.xml" rel="self" type="application/rss+xml" />
    <description>grafana</description>
    <generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>zh</language><lastBuildDate>Wed, 28 Dec 2016 19:56:08 +0800</lastBuildDate>
    <image>
      <url>/img/logo-wide.png</url>
      <title>grafana</title>
      <link>/tags/grafana/</link>
    </image>
    
    <item>
      <title>Grafana 和 Elasticsearch</title>
      <link>/post/grafana-and-es/</link>
      <pubDate>Wed, 28 Dec 2016 19:56:08 +0800</pubDate>
      <guid>/post/grafana-and-es/</guid>
      <description>

&lt;p&gt;容器化和微服务，让世界花枝招展，又支离破碎。一个典型的运行在容器云之上的微服务架构的应用，通常是由多种服务和基础设施的支撑而来的。这对运维工作提出一个很大的挑战 —— 一个应用后端的众多系统，究竟是怎样的工作状况？&lt;/p&gt;

&lt;p&gt;事实上，所有构成这一应用的微服务以及支撑这一应用的所有基础设施，都会有各自的日志、指标数据，以及构建在上游的监控、日志系统。各处分散的数据和系统，会给支持团队造成极大的负担，也最终成为开发运维工作的拦路虎。&lt;/p&gt;

&lt;p&gt;之前的经验中，可以把自家应用的各种业务、技术指标通过 Zabbix 或者 influxDB 进行存储，经由 Grafana 的插件系统进行整合展示，目前流行的容器云支撑系统 Kubernetes，也能够通过 influxDB 在 Grafana 上展示 Heapster 搜集到的数据。指标的事情解决了，下面自然就是日志了。&lt;/p&gt;

&lt;p&gt;Grafana 也提供了针对 Elasticsearch 的数据源插件。下面用 Kubernetes 中正在运行的日志收集实例来展示 Grafana 对 ES 的支持。&lt;/p&gt;

&lt;h2 id=&#34;建立数据源&#34;&gt;建立数据源&lt;/h2&gt;

&lt;p&gt;首先是建立一个 Elasticsearch 类型的数据源。这里使用了一个 Kubernetes 集群的 ES 日志。Type 部分选择 Elasticsearch，然后填写 URL 地址、认证方式。Index name 填写 &lt;code&gt;logstash-*&lt;/code&gt;。大致如图所示。&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;images/grafana-ds-es.png&#34; alt=&#34;datasource&#34; /&gt;&lt;/p&gt;

&lt;p&gt;点击下面的 &lt;code&gt;Test &amp;amp; Save&lt;/code&gt;，测试成功后完成数据源设置。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Access 一般来说都是选择 Proxy，也就是服务器间通信。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&#34;建立指标&#34;&gt;建立指标&lt;/h2&gt;

&lt;p&gt;接下来进入展示环节。利用新建的 ES 数据源，来建立展示单元。&lt;/p&gt;

&lt;h3 id=&#34;曲线图&#34;&gt;曲线图&lt;/h3&gt;

&lt;p&gt;首先建立一个 Graph Panel，数据源选择上面新建的 ES。&lt;/p&gt;

&lt;p&gt;Query 一栏需要按照 Lucene 语法进行查询。这里我们选择 &lt;code&gt;kubernetes.container_name: &amp;quot;jenkins&amp;quot;&lt;/code&gt;，也就是容器名称为 &amp;ldquo;jenkins&amp;rdquo; 的日志项。&lt;/p&gt;

&lt;p&gt;其他可以保持缺省即可。&lt;/p&gt;

&lt;p&gt;配置结束之后，稍等几秒钟，就会出现数据点。&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;images/grafana-es-metric-count.png&#34; alt=&#34;count&#34; /&gt;&lt;/p&gt;

&lt;h3 id=&#34;日志表格&#34;&gt;日志表格&lt;/h3&gt;

&lt;p&gt;个人感觉上面的的数字在日志来说用处并不大，我们的目的还是在同一界面下查看日志。&lt;/p&gt;

&lt;p&gt;建立一个 Table Panel。配置数据源为 ES。&lt;strong&gt;Metric 选择 &lt;code&gt;Raw Document&lt;/code&gt;&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;经过短暂等候，上面表格会出现一堆的 JSON 文本，我们要通过 Options 来进行展现配置。&lt;/p&gt;

&lt;p&gt;在 Columns 中我们简单的新加两列：&amp;rdquo;kubernetes.container_name&amp;rdquo; 和 &amp;ldquo;log&amp;rdquo;，就会以表格的形式把这两列展示出来。&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;images/grafana-es-log-table.png&#34; alt=&#34;table&#34; /&gt;&lt;/p&gt;

&lt;h2 id=&#34;告一段落&#34;&gt;告一段落&lt;/h2&gt;

&lt;p&gt;至此，Grafana 就成为一个集成了众多来源的运维入口。经过进一步的加工和配置（&lt;strong&gt;其实非常大量非常琐碎&lt;/strong&gt;），仅从这一个入口就能够完成很多的日常巡检任务；更重要的是，因为数据的统一展示，在业务、服务和基础设施之间建立了直观的联系，为事故的处理甚至预测，提供了更多的便利条件。&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Grafana 的新瓶，Zabbix 的酒</title>
      <link>/post/grafana-and-zabbix/</link>
      <pubDate>Fri, 02 Dec 2016 05:16:01 +0800</pubDate>
      <guid>/post/grafana-and-zabbix/</guid>
      <description>

&lt;p&gt;&lt;img src=&#34;images/dashboard.png&#34; alt=&#34;zabbix-grafana&#34; /&gt;&lt;/p&gt;

&lt;p&gt;近期声名鹊起的 Grafana，终于拉了年老色衰的 Zabbix 一把，提供了 Zabbix 数据源插件，让 Zabbix 得以改头换面（画外音：洒家这下有机会上大屏幕了吧？）闲话少叙，言归正传：&lt;/p&gt;

&lt;h2 id=&#34;安装&#34;&gt;安装&lt;/h2&gt;

&lt;p&gt;这里采用 Docker Hub 中的 Grafana Latest 镜像直接运行 Grafana：&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;#!/bin/sh
docker run -d -p 3000:3000 \
    --name=grafana \
    -v /var/lib/grafana:/var/lib/grafana \
    -e &amp;quot;GF_SECURITY_ADMIN_PASSWORD=secret&amp;quot; \
    grafana/grafana
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;这一启动脚本开放主机的 3000 端口作为 Grafana 的服务端口；将本机的 /var/lib/grafana 映射到容器同一目录，用于存储本地数据，admin 密码设置为 &amp;ldquo;secret&amp;rdquo;。&lt;/p&gt;

&lt;p&gt;下载和启动容器之后，会生成名为 grafana 的容器实例，利用 exec 命令安装插件：&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;docker exec  grafana grafana-cli plugins install alexanderzobnin-zabbix-app
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;安装之后，需要重新启动容器来识别插件，可以简单粗暴的使用 docker 的 kill 和 rm 来实现。&lt;/p&gt;

&lt;p&gt;完成了重启，就可以在浏览器访问 Grafana 了。使用账号 admin 和之前设置的密码登录系统。&lt;/p&gt;

&lt;p&gt;访问菜单 &lt;code&gt;plug-ins --&amp;gt; app&lt;/code&gt;，应该会看到 Zabbix 插件，点击 enable 按钮，启用。&lt;/p&gt;

&lt;h2 id=&#34;配置&#34;&gt;配置&lt;/h2&gt;

&lt;h3 id=&#34;数据源&#34;&gt;数据源&lt;/h3&gt;

&lt;p&gt;访问主菜单的 &lt;code&gt;Datasource&lt;/code&gt; ，添加新的数据源。这里可以设置 Zabbix 为缺省数据源。类型自然是选择新出现的 &lt;code&gt;zabbix&lt;/code&gt; 类型了。&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;images/gz-datasource.png&#34; alt=&#34;datasource&#34; /&gt;&lt;/p&gt;

&lt;p&gt;注意 URL 部分需要在后面加上 &lt;code&gt;api_jsonrpc.php&lt;/code&gt; 作为访问入口。填好用户名密码，其他不变即可。&lt;/p&gt;

&lt;p&gt;点击 Save &amp;amp; Test 按钮测试并保存数据源设置。&lt;/p&gt;

&lt;h3 id=&#34;缺省-dashboard&#34;&gt;缺省 Dashboard&lt;/h3&gt;

&lt;p&gt;随插件自带了两个 Dashboard，在&lt;strong&gt;配置好数据源之后&lt;/strong&gt;，回到 Zabbix 插件的配置页面，点击 Dashboard 右侧的 Re-import 按钮。&lt;/p&gt;

&lt;h3 id=&#34;新建-dashboard&#34;&gt;新建 Dashboard&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;选择主菜单中 &lt;code&gt;Dashboard --&amp;gt; New&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;新建一个 Graph。点击新的 Graph 对象，在弹出的工具栏中选择 Edit。&lt;/li&gt;
&lt;li&gt;这里就出现了选择指标的编辑区

&lt;ul&gt;
&lt;li&gt;General 页可以对标题等进行设置&lt;/li&gt;
&lt;li&gt;Metric 页中可以对指标进行管理，例如下图展示了如何新建一个可用内存的指标：&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&#34;images/gz-metric-add.png&#34; alt=&#34;memory metric&#34; /&gt;&lt;/p&gt;

&lt;p&gt;每个 Panel 都可以合并多个 Metrics，在 Dashboard 中也可以对 panel 进行排列组合，达到美观实用的目的。&lt;/p&gt;

&lt;h2 id=&#34;查看&#34;&gt;查看&lt;/h2&gt;

&lt;p&gt;现在就可以在首页的 Dashboard 中查看系统自带的两个 Dashboard，以及我们新建的 My Dashboard 了。&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
