linux - Collectd 无法读取 Ansible 发送的配置文件

标签 linux macos ansible collectd

我目前正在使用 Ansible 自动设置collectd。 除了配置文件传输之外,一切都按预期进行。

每次我使用 Ansible 将collectd 配置文件发送到我的collectd 服务器时,都会出现以下错误。

Parse error in file `/etc/collectd.conf', line 23 near `': syntax error, unexpected $end

此问题已在“Config file finding unexpected $end, not sure why”中处理。

根据我在那里找到的答案,我应该在文件末尾放置一个新行。每次我尝试都会发生同样的错误...

但是,当我在collectd服务器上手动重新保存文件时,它确实可以工作。有谁知道这是什么原因以及如何解决?配置文件需要由Ansible发送。

Linux CentOS 7
Collectd版本5.8.1

MacOS Mojave 10.14.3
安塞 bool 版本 2.7.9

Ansible 代码:tasks/configuration.yml

---

- name: Install main configuration file
  template:
    src: collectd.conf.j2
    dest: "{{ collectd_config_file }}"
    owner: root
    group: root
    mode: 0644
    force: yes
  notify: restart collectd
  tags: collectd

- name: Install interface configuration file
  template:
    src: interface.conf.j2
    dest: "{{ collectd_include_dir }}/interface.conf"
    owner: root
    group: root
    mode: 0644
    force: yes
  notify: restart collectd
  tags: collectd

- name: Install snmp configuration file
  template:
    src: snmp.conf.j2
    dest: "{{ collectd_include_dir }}/snmp.conf"
    owner: root
    group: root
    mode: 0644
    force: yes
  notify: restart collectd
  tags: collectd

- name: Install write_graphite configuration file
  template:
    src: write_graphite.conf.j2
    dest: "{{ collectd_include_dir }}/write_graphite.conf"
    owner: root
    group: root
    mode: 0644
    force: yes
  notify: restart collectd
  tags: collectd



Ansible 代码:templates/collectd.conf.j2

Hostname    "localhost"
FQDNLookup   true
#BaseDir     "/var/lib/collectd"
#PIDFile     "/var/run/collectd.pid"
#PluginDir   "/usr/lib64/collectd"
#TypesDB     "/usr/share/collectd/types.db"
#AutoLoadPlugin false
#CollectInternalStats false
#Interval     10
#MaxReadInterval 86400
#Timeout         2
#ReadThreads     5
#WriteThreads    5
#WriteQueueLimitHigh 1000000
#WriteQueueLimitLow   800000
LoadPlugin syslog
<Plugin syslog>
    LogLevel info
</Plugin>
LoadPlugin interface
LoadPlugin snmp
LoadPlugin write_graphite
Include "/etc/collectd.d/*.conf"



错误输出:

localhost.localdomain collectd[19021]: Parse error in file `/etc/collectd.conf', line 23 near `': syntax error, unexpected $end
localhost.localdomain collectd[19021]: yyparse returned error #1
localhost.localdomain collectd[19021]: configfile: Cannot read file `/etc/collectd.conf'.
localhost.localdomain collectd[19021]: Unable to read config file /etc/collectd.conf.
localhost.localdomain collectd[19021]: Error: Reading the config file failed!
localhost.localdomain collectd[19021]: Read the logs for details.
localhost.localdomain systemd[1]: collectd.service: main process exited, code=exited, status=1/FAILURE
localhost.localdomain systemd[1]: Failed to start Collectd statistics daemon.

问题不在于/etc/collectd.d/*.conf 文件的语法。我只需打开文件,无需任何更改即可再次保存它们,它们就可以工作了。但是,如果您确实想查看这些插件配置文件的代码,您可以找到它们 here .

提前致谢!

最佳答案

显然是之前发布的答案 question确实是我问题的答案。需要在每个配置文件的末尾添加一个空行。

关于linux - Collectd 无法读取 Ansible 发送的配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55335175/

相关文章:

python - Ansible 找不到 pyVmomi

linux - 使用 Ansible 永久设置环境变量

linux - 创建不包括目录中某些文件的符号链接(symbolic link)

shell - 向 Ansible 期望(或 shell)模块发送一个退格键(以应答终端中的脚本)

linux - 为什么我挂载的 docker volume 文件会变成容器内的文件夹?

ios - Mac模拟器(Xcode)等待启动命令

macos - ./配置 : No such file or directory - build nginx-rtmp-module on Mac OS X

macos - Linux/dev/input对应的Mac低级键盘设备?

linux - postgres socket删除了怎么办?

xml - 如何使用 xmlstarlet 插入现有的 xml 行