如何使用Ansible添加Grafana数据源
在这篇博客文章中,将介绍如何在不使用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_user
和StrongPassword
。
请记住用正确的值替换这些值。
在我们的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数据源的名称来添加许多数据源。