jondot / es-diag

Elastic Search health checks and problem discovery toolkit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ES-Diag

es-diag is a command line tool that evaluates your machine and setup, points out typical machine misconfiguration for Elastic Search, sniffs out health parameters from a running Elastic Search instance (not impl. yet), and recommends ways to amend it.


Getting Started

You need to have a recent Ruby on your system.

$ gem install es-diag
$ es-diag status
# should output a lot of useful data if your system
# isn't healthy. a list of things it checked otherwise.

Adding checks

es-diag will run a series of predefined checks. My hope is that you can add checks and submit pull requests very easily.

Writing a check is designed to be VERY easy, using a simple DSL. Lets take a look at an example:

    # set the check title
    title "ulimit set appropriately - avoid 'Too many open files'"

    # specify actions to take to amend problems that can be detected
    # by this check.
    how_to """
        To raise the limit add to /etc/security/limits.conf the lines:

          elasticsearch soft nofile 32000
          elasticsearch hard nofile 32000
        
        If you still see the previous limit, run:

          $ egrep -r pam_limits /etc/pam.d/
        
        and check that all pam_limits.so are not commented out.

        Now you can run to verify:

          $ bin/elasticsearch -f -Des.max-open-files=true
          [2011-04-05 04:12:02,687][INFO ][bootstrap] max_open_files [32000]
    """

    # Here, you have a property bag called 'data' that is 
    # exposed via Opscode/ohai [here is a sample](https://gist.github.com/2381589).
    # If you want to sample your own system:
    # 
    # $ gem install ohai
    # $ ohai
    # 
    # It is most probably that `data` will contain additional properties
    # not originating from ohai in the future.
    #
    if data.ulimit['soft']['nofiles'] < 32_000
      warn "Increment your soft file limit (#{data.ulimit['soft']['nofiles']}) to 32000"
    end
    if data.ulimit['hard']['nofiles'] < 32_000
      warn "Increment your hard file limit (#{data.ulimit['hard']['nofiles']}) to 32000"
    end

Next, put all of this in a file and drop it in the lib/checks folder. It will be picked up automatically.

Contributing

Fork, implement, add tests, pull request, get my everlasting thanks and a respectable place here :).

Copyright

Copyright (c) 2012 Dotan Nahum @jondot. See MIT-LICENSE for further details.

About

Elastic Search health checks and problem discovery toolkit


Languages

Language:Ruby 100.0%