如何使用Ansible添加Grafana数据源

时间:2020-02-23 14:38:15  来源:igfitidea点击:

在这篇博客文章中,将介绍如何在不使用Grafana Web界面的情况下轻松地将数据源添加到Grafana。 Grafana支持时间序列数据的各种存储后端,这就是所谓的数据源。

Grafana支持的数据源

正式支持以下数据源:石墨弹性搜索CloudWatchInfluxDBOpenTSDBPrometheusMySQLPostgresMicrosoft SQL Server(MSSQL)

每个数据源都有一个特定的查询编辑器,该查询编辑器是针对特定数据源公开的功能而定制的。

安装并运行Grafana后,可能需要安装数据源服务器,可以是Prometheus,InfluxDB,Graphite。

在Linux上安装Ansible

我们需要安装ansible并在Linux系统上工作才能使用此方法。我们可以使用pythonpip软件包管理器在任何Linux上轻松安装ansible。

在Linux上安装python-pip。

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

设定Ansible环境

创建一个基本目录

mkdir -p ~/ansible

转到ansible基本目录,并创建一个目录来存储所有Ansible角色。

cd ~/ansible
mkdir roles

roles目录下,我们将有任务和默认变量文件夹

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

定义Ansible变量

我们用于向Grafana添加数据源的变量将在文件roles/defaults/main.yml中定义。在此示例中,我们将向InfxDB数据源添加Grafana。下面是我们的/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_userStrongPassword

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

在我们的InfluxDB和Grafana安装指南中定义了在InfluxDB数据源上启用身份验证在CentOS 7上安装Grafana和InfluxDB,它适用于在任何其他Linux版本上运行的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 }}"

在文件defaults/main.yml中定义的任务参考值。

运行Ansible Playbook

转到根目录ansible并创建剧本执行文件。

cd ~/ansible/

创建一个内容如下的文件

$cat grafana-datasource.yml 
--
- name: Add data source to grafana
  hosts: localhost
  roles:
    - grafana-datasource

最后,通过运行以下命令执行剧本:

$ 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

就这样。在"数据源"部分下确认Grafana上的数据源。

现在,我们可以通过仅编辑所有InfluxDB数据源的名称来添加许多数据源。