使用Ansible添加Grafana数据源的方法

本文向你展示如何在不使用Grafana Web界面的情况下轻松地向Grafana添加数据源。Grafana支持的数据源有:Graphite、Elasticsearch、CloudWatch、InfluxDB、OpenTSDB、Prometheus、MySQL、Postgres、Microsoft SQL Server (MSSQL)。每个数据源都有一个特定的查询编辑器,该编辑器针对特定数据源公开的特性和功能进行了自定义。安装Grafana请参考在Ubuntu 18.04/Debian 9上安装Grafana的方法

一、在Linux上安装Ansible

你需要在Linux系统上安装和使用ansible才能使用此方法,参考在Ubuntu 18.04系统中安装Ansible 2.7.5的方法

你也可以使用python pip包管理器在任何Linux上轻松安装ansible,pip是一个包管理系统,用于安装和管理用Python编写的软件包

在Ubuntu/Debian上安装pip:

sudo apt-get -y install python-pip

在CentOS上安装pip:

sudo yum -y install python-pip

在Arch Linux上安装pip:

sudo paman -S python-pip

安装pip后,将其升级到最新版本:

sudo pip install --upgrade pip

同时在安装Pip后可以参考在RHEL 8/CentOS 8系统上安装和配置Ansible一文来完成安装。

二、设置Ansible环境

创建ansible基目录:

mkdir -p ~/ansible

切换到ansible基目录并创建一个目录来存储所有Ansible角色:

cd ~/ansible

mkdir roles

在roles目录下,我们将有tasks和defaults变量文件夹:

mkdir -p roles/grafana-datasource/{tasks,defaults]

三、定义Ansible变量

我们用于向Grafana添加数据源的变量将在fileroles/defaults/main.yml上定义,在此示例中,我们将向Grafana添加InfluxDB数据源,下面是我们的/defaults/main.yml,我将稍微解释一下它的内容:

$ cat defaults/main.yml

---

grafana_url: "http://192.168.50.3:3000"

grafana_user: admin

grafana_password: "GrafanaAdminPassword"

org_id: "1"

data_source:

- name: ldap.example.com

ds_type: "influxdb"

url: "http://192.168.50.4:8086"

user: "influx_user"

password: "StrongPassword"

解释如下:

http://192.168.50.3:3000是grafana的URL,它在默认端口3000上运行。

Grafana管理员用户是admin,密码为GrafanaAdminPassword。

要添加的数据源名为ldap.example.com。

数据源类型是Influxdb。

http://192.168.50.4:8086是InfluxDB服务器的URL。

对于具有身份验证的InfluxDB(推荐),分别定义用户名和密码:Influx_user和StrongPassword。

请记住用正确的值替换值。

安装InfluxDB请参考在Ubuntu 18.04/Debian 9系统上安装InfluxDB的方法

四、创建Ansible任务

如果定义了用于创建数据源的所有变量,请继续创建任务:

$ cat tasks/main.yml 

---

- name: Create influxdb datasource

grafana_datasource:

name: "{{ item.name }}"

grafana_url: "{{ grafana_url }}"

grafana_user: "{{ grafana_user }}"

grafana_password: "{{ grafana_password }}"

ds_type: "{{ item.ds_type }}"

url: "{{ item.url }}"

database: "{{ item.name }}"

user: "{{ item.user }}"

password: "{{ item.password }}"

state: present

with_items: "{{ data_source }}"

filedefaults/main.yml上定义的任务引用值。

五、运行Ansible Playbook

切换到root ansible目录并创建playbook执行文件:

cd ~/ansible/

创建一个包含以下内容的文件:

$ cat grafana-datasource.yml 

---

- name: Add data source to grafana

hosts: localhost

roles:

- grafana-datasource

最后,通过运行执行playbook:

$ ansible-playbook grafana-datasource.yml

输出如下信息:

# ansible-playbook grafana-datasource.yml

PLAY [Add data source to grafana] *********************************

TASK [Gathering Facts] *********************************

ok: [localhost]

TASK [grafana-datasource : Create influxdb datasource] *********************************

changed: [localhost] => (item={u'url': u'http://192.168.50.4:8086', u'password': u'StrongPassword', u'ds_type': u'influxdb', u'name': u'ldap.example.com', u'user': u'influx_user'})

PLAY RECAP *********************************

localhost                  : ok=2    changed=1    unreachable=0    failed=0

到这里就可以在sectionData Sources下确认Grafana上的数据源:

未分类

你现在就可以通过仅为所有InfluxDB数据源编辑名称来添加许多数据源了。

Grafana 4.x 安装部署(CentOS 7)

一、前言

本篇适用范围

  • CentOS 7+
  • InfluxDB 4.x

环境信息

  • CentOS 7
  • InfluxDB 4.6.3

二、安装

  • 安装
sudo yum install https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.3-1.x86_64.rpm
  • 启动服务并设置为开机启动
#启动Grafana服务
sudo systemctl start grafana-server
sudo systemctl status grafana-server

#将Grafana服务设置为开机启动
sudo systemctl enable grafana-server
  • 防火墙配置
#开放端口
firewall-cmd --add-port=3000/tcp --permanent

#重载防火墙配置
firewall-cmd --reload
  • 访问测试
http://<ip>:3000

如果出现登录页面则正常。

未分类

默认管理账号;admin,密码:admin

三、备注

  • 延伸阅读

Grafana + InfluxDB数据源以及曲线图表仪表盘配置:https://ken.io/note/grafana-quickstart-influxdb-datasource-graph

  • 本文参考

http://docs.grafana.org/installation/rpm/

使用InfluxDB+cAdvisor+Grafana配置Docker监控

文档来源

  • 文档来源:How to setup Docker Monitoring
  • 由garyond翻译、校正及整理

Docker监控简介

我们提供的Docker主机和容器越来越多,对Docker服务器和容器的监控越来越必要。本文将引导你了解如何通过多个不同组件的配置和协作,以实现Docker监控。

Docker监控组件

首先, 我们假设在您的主机上已经安装、配置和运行Docker Engine。请确保您可以通过Web浏览器在本地或者通过网络IP连接到Docker主机。以下我们将详细介绍如何创建我们的Docker监控方案。

  • cAdvisor: Google开源的用于监控基础设施应用的工具,它是一个强大的监控工具,不需要任何配置就可以通过运行在Docker主机上的容器来监控Docker容器,而且可以监控Docker主机。更多详细操作和配置选项可以查看Github上的cAdvisor项目文档。

  • influxDB: 它是一个分布式时间序列数据库。cAdvisor仅仅显示实时信息,但是不存储监视数据。因此,我们需要提供时序数据库用于存储cAdvisor组件所提供的监控信息,以便显示除实时信息之外的时序数据。

  • Grafana: Grafana可视化展示平台允许我们可视化地展示监控信息。它允许我们对influxDB进行查询,并通过强大的图表功能进行可视化展示。

本文配置组件版本信息如下:

  • InfluxDB: V 1.0.0
  • cAdvisior: V 0.24.1
  • Grafana: V 4.0.2

Docker监控安装与配置

下面,我们将根据上述的Docker监控组件进行安装和配置,形成统一的Docker监控平台。

我们将首先先安装influxDB, 以便于它能够与cAdvisor进行协作。

1. 安装influxDB

下载influxDB镜像

docker pull tutum/influxdb

运行influxdb容器

docker run -d 
   -p 8083:8083 
   -p 8086:8086 
   --expose 8090 
   --expose 8099 
   --name influxsrv 
   tutum/influxdb

influxdb容器运行成功后,通过Web浏览器访问http://docker-host-ip:8083访问influxdb后台管理,并登录后台管理系统(默认用户名:root, 默认密码:root)。

未分类

influxdb_connection_settings

2. 创建cAdvisor应用数据库

在登录influxdb后台数据库管理平台后, 创建cAdvisor数据库, 用于存储cAdvisor应用所获取的实时监控数据。在influxDB管理界面中的Querie s输入框中创建数据库和用户:

未分类

create_database
# 创建数据库
create database 'cadvisor'; 

# 创建用户
CREATE USER 'cadvisor' WITH PASSWORD 'cadvisor'

# 用户授权
grant all privileges on 'cadvisor' to 'cadvisor'

# 授予读写权限
grant WRITE on 'cadvisor' to 'cadvisor'
grant READ on 'cadvisor' to 'cadvisor'

3. 运行cAdvisor应用容器并与influxDB容器进行互联

启动cAdvisor容器

docker run 
  --volume=/:/rootfs:ro 
  --volume=/var/run:/var/run:rw 
  --volume=/sys:/sys:ro 
  --volume=/var/lib/docker/:/var/lib/docker:ro 
  -p 8080:8080 
  --detach=true  
  --link influxsrv:influxsrv 
  --name=cadvisor 
  google/cadvisor:latest 
  -storage_driver=influxdb 
  -storage_driver_db=cadvisor 
  -storage_driver_host=influxsrv:8086

cAdvisor应用容器启动成功后,通过Web浏览器访问地址http://docker-host-ip:8080,便可以查看cAdvisor监控工具所收集到的Docker主机和容器的资源统计信息。

未分类

cAdvisor WebUI

4. 运行Grafana可视化平台并与influxDB容器进行互联

docker run -d 
  -p 3000:3000 
  -e INFLUXDB_HOST=localhost 
  -e INFLUXDB_PORT=8086 
  -e INFLUXDB_NAME=cadvisor 
  -e INFLUXDB_USER=root  
  -e INFLUXDB_PASS=root 
  --link influxsrv:influxsrv 
  --name grafana 
  grafana/grafana

5. 登录Grafana管理平台

通过Web浏览器访问地址http://docker-host-ip:3000登录Grafana管理平台。

  • 用户名:admin
  • 密 码:admin

未分类

Grafana_Login

6. 配置Grafana与influxDB数据库连接

(1). 配置Granfana数据源

在Grafana管理平台中,单击“添加数据源”对数据源进行配置。如下图所示。

未分类

Add_Datasource

  • 基本信息

Name:influxdb
Type:influxDB
Default: checked

  • Http settings

Url:http://influxsrv:8086
Access:proxy

  • HTTP Auth

Basic Auth: checked

  • Basic Auth Details

User: admin
Password: admin

  • InfluxDB Details

Database:cadvisor
User:cadvisor
Password:cadvisor

配置完成后, 我们已经建立与influxDB的连接,下面我们将其进行测试。

(2). 添加Dashboard

下面我们将使用Grafana配置我们的第一个Dashboard,并可视化来自cAdvisor的监控数据。

1). 点击“Grafana”图标, 打开Dashboard菜单,选择新建Dashboard;

未分类

New Dashboard

2). 在Dashboard面板中选择相应的组件并拖动到相关的位置;

未分类

Add_Component

3). 点击面板的标题,会弹出相应的选项”view”、”edit”、”Duplicates”、”share”和删除按扭;

未分类

Edit Component

4). 选择”edit”选项,出现相应的配置项,在“Metrics”选项卡中配置相应的数据表和数据源信息;

未分类

Edit_Configure

例如: 配置内存使用率信息

未分类

Edit Memory Usage

在Metric选项卡中, 配置数据表来源为:SELECT mean(“value”) FROM “memory_usage” WHERE $timeFilter GROUP BY time(10s) fill(0), 配置数据源Panel Datasource为:cadvisor;

在Axes选项卡中配置相关的显示单位。

未分类

Config Axies

5). 配置完相关的选项后,点击Dashboard导航栏的保存按钮,便可完成Dashboard的配置。

未分类

Save Config

至此, 所有配置步骤完成, 我们能够看到Grafana显示相关的监控图表信息。

完整PDF文档可以到Linux公社资源站下载:

——————————————分割线——————————————

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2017年资料/11月/7日/使用InfluxDB+cAdvisor+Grafana配置Docker监控/

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

——————————————分割线——————————————

graphite+grafana监控openstack和ceph

本文环境:CentOS 7.3.1611,openstack+ceph

架构图如下,服务端部分可以分开也可以部署在同一台主机上:

未分类

一、添加epel源和base源,安装carbon和whisper,whisper用于存储监控的数据,类似rrd文件那样固定大小:

yum install python-carbon python-whisper

编辑whisper存储规则,以下是自己写的规则:

vi /etc/carbon/storage-schemas.conf
[carbon]
pattern = ^carbon.
retentions = 60:90d

[vms]
pattern = ^instances.
retentions = 60s:30d,1h:180d,1d:2y,30d:10y

[cluster]
pattern = ^servers..*.CephCollector.ceph.mon..*.cluster.
retentions = 60s:30d,1h:180d,1d:2y,30d:10y

[CephStats]
pattern = ^servers..*.CephStatsCollector.
retentions = 60s:30d,1h:180d,1d:2y,30d:10y

[cpu]
pattern = ^servers..*.cpu.
retentions = 60s:30d,1h:180d,1d:2y,30d:10y

[diskspace]
pattern = ^servers..*.diskspace.
retentions = 60s:30d,1h:180d,1d:2y,30d:10y

[iostat]
pattern = ^servers..*.iostat.
retentions = 60s:30d,1h:180d,1d:2y,30d:10y

[loadavg]
pattern = ^servers..*.loadavg.
retentions = 60s:30d,1h:180d,1d:2y,30d:10y

[memory]
pattern = ^servers..*.memory.
retentions = 60s:30d,1h:180d,1d:2y,30d:10y

[network]
pattern = ^servers..*.network.
retentions = 60s:30d,1h:180d,1d:2y,30d:10y

[default_1min_for_1day]
pattern = .*
retentions = 60s:1d

注:监控字段可以在diamond的日志(/var/log/diamond/archive.log)或者grafana查看。

60s:30d,1h:180d 就是30天内的数据保存间隔为60秒,一个月到半年的保存间隔为1小时,规则是按顺序匹配,不是最长匹配,所以 default 规则一定要放最后,default设定为那么小只是为了不存储不需要的数据,diamond监控的字段太多,不需要全部存储。

carbon配置:

vi /etc/carbon/carbon.conf

[cache]部分,MAX_UPDATES_PER_SECOND(每秒钟最大更新条数)和MAX_CREATES_PER_MINUTE(每分钟最大创建文件数,diamon客户端首次推送数据的时候才会创建whisper数据文件)可能需要调整一下。

启动carbon-cache:

systemctl start carbon-cache

二、客户端安装diamond

(1)每个被监控的客户端都需要安装agent程序

在python官网上有,附链接:https://pypi.python.org/pypi/diamond/4.0.515

解压后 python setup.py install 即安装完成。

(2)配置

cd /etc/diamond
cp diamond.conf.example diamond.conf
vi diamond.conf
# Graphite server host
host = 127.0.0.1 #填上carbon-cache服务器IP,本机的话可以不修改。
[[default]]
hostname = test-node1
# 60秒推送一次数据
interval = 60

(3)配置监控项,diamond可以监控的项目很多,包括ceph、libvirt、mysql、haproxy、nginx等等等等

diamond-setup

基本上一直按回车就可以,由于项目太多,用setup也是繁琐,直接把需要监控的项目放到/etc/diamond/collectors/就可以,具体内容可以参照diamond-setup生成的配置文件。

(4)启动

/etc/init.d/diamond start

至此,监控的服务端和客户端已经部署好,接下来的是部署用于展示的web服务,可以使用 graphite-api + Grafana,也可以 graphite-web,graphite-web是基于django的,需要安装的东西也是一大堆,而且用户体验远远不及Grafana这个专业展示软件。

三、安装 graphite-api

graphite-api的作用只是向grafana提供访问whisper数据的接口。

(1)安装

yum install graphite-api

(2)配置

graphite-api默认启动 127.0.0.1:8888,故需要外部调用或者使用其他服务端口的话,修改/etc/sysconfig/graphite-api的GRAPHITE_API_ADDRESS=0.0.0.0或者GRAPHITE_API_PORT
配置文件 /etc/graphite-api.yaml 使用默认即可。

(3)启动

systemctl start graphite-api

四、安装grafana

grafana是个很流弊的画图软件,支持很多种数据源,展示图形也很多种。

官网下载地址:https://grafana.com/grafana/download

(1)yum本地安装,自动安装依赖包:

yum localinstall grafana-4.4.1-1.x86_64.rpm

(2)安装mysql-server并创建数据库:
由于我的grafana直接装在openstack的控制节点上,已经安装好了mysql-server,直接创建数据库:

CREATE DATABASE grafana ;
GRANT ALL PRIVILEGES ON grafana.* TO 'grafana'@'127.0.0.1' IDENTIFIED BY 'grafana';
FLUSH PRIVILEGES;

mysql在这里只是储存grafana的用户信息,dashboard信息等,不会保存监控的数据。

监控的数据是直接调用graphite-api接口读取whisper数据文件。

(3)配置文件:/etc/grafana/grafana.ini
配置url、mysql连接信息,禁止检查更新、自动发送”使用计数”给grafana,登录界面不使用用户注册功能。

[server]
root_url = http://0.0.0.0:3000
[database]
type = mysql
host = 127.0.0.1:3306
name = grafana
user = grafana
password = grafana
[analytics]
reporting_enabled = false
check_for_updates = false
[security]
[snapshots]
external_enabled = false
[users]
allow_sign_up = false

(4)启动 grafana :

/etc/init.d/grafana-server start

五、配置监控

(1)浏览器登录 grafana,默认初始用户名密码是admin/admin,在grafana.ini可配置。

(2)添加数据源:Data Sources ->Add data sources,输入自定义名称,Type选择【graphite】,url为graphite-api的地址和端口,默认本机8888端口即 【http://localhost:8888】,Access选择【proxy】,其他不填,点击保存并测试连接【Save&Test】,正常返回为绿色背景提示文字

"Success
Data source is working"

(3)至此,全部部署完成,直接在页面上添加dashboard->添加panel->编辑panel即可。

附上监控图两张:

未分类

未分类

使用Zabbix+Grafana监控

部署代码

https://github.com/liqiang311/zabbix-grafana

部署步骤

准备工作

下载部署代码,并且下载granafa插件

git clone https://github.com/liqiang311/zabbix-grafana.git
git clone https://github.com/alexanderzobnin/grafana-zabbix.git zabbix-grafana/grafana/plugins/grafana-zabbix

下载docker镜像

如何安装Docker和Docker-Compose见http://www.liqiang311.com/2017/09/docker-install/

docker pull mysql:5.7
docker pull zabbix/zabbix-server-mysql:latest
docker pull zabbix/zabbix-web-nginx-mysql:latest
docker pull grafana/grafana:latest

启动命令

cd zabbix-grafana
docker-compose up -d

配置

Zabbix

登录ip:10052,帐号为Admin,密码为zabbix

进入后右上角可以更改语言为中文

Grafana

webip:3000

默认帐号admin/admin

Plugins->app->Zabbix->点击Enable

添加Data Source

点击左上角Grafana图标,选择Data Sources->Add data Source

填写以下内容

Name: zabbix
Type: Zabbix
url: http://localhost:10052/api_jsonrpc.php
Access: proxy
Basic Auth: √
Basic Auth Details User: admin
Basic Auth Details Password: zabbix
Zabbix API details Username: admin
Zabbix API details Password: zabbix

然后点击下方 Save & Test。若成功连接,则按钮上方会显示绿色信息:

Success
Zabbix API version: 3.2.5

客户端安装

若要监控磁盘使用率、CPU等,需在主机上安装如下软件

apt-get install zabbix-agent

然后编辑如下配置文件

vim /etc/zabbix/zabbix_agentd.conf

将其中的85行的Server改为上文Zabbix配置的IP,如127.0.0.1

将其中的126行的ServerActive配置为上文Zabbix的server IP,如127.0.0.1:10051

保存文件退出。

重启zabbix-agent

service zabbix-agent restart

自定义监控选项

参考http://www.cnblogs.com/jjzd/p/6474193.html

在/etc/zabbix/zabbix_agentd.conf中底部添加如下代码:

UserParameter=gpu0.temp, nvidia-smi -q -g 0 2>&1|grep -i "gpu current temp"|awk '{print $5}'| sed s/%//g
UserParameter=gpu1.temp, nvidia-smi -q -g 1 2>&1|grep -i "gpu current temp"|awk '{print $5}'| sed s/%//g

UserParameter=cpu0.temp, sensors coretemp-isa-0000|grep Physical|awk '{print $4}'|cut -d "." -f1
UserParameter=cpu1.temp, sensors coretemp-isa-0001|grep Physical|awk '{print $4}'|cut -d "." -f1

重启zabbix-agent service zabbix-agent restart

在server中添加监控, 键值名为 gpu0.temp