Thank you for your interest in contributing to the Observability Toolkit! This document provides guidelines and information for contributors.
- Fork the repository
- Clone your fork locally
- Create a new branch for your feature/fix
- Make your changes
- Test your changes thoroughly
- Submit a pull request
# Clone the repository
git clone https://github.com/vigneshragupathy/observability-toolkit.git
cd observability-toolkit
# Copy environment configuration
cp .env.example .env
# Start the development stack
./manage-stack.sh start- Use consistent indentation (2 spaces for YAML, 4 spaces for shell scripts)
- Follow existing naming conventions
- Include comments for complex configurations
- Ensure all configuration files are properly formatted
When adding new observability components:
- Update Docker Compose: Add the new service to
docker-compose.yml - Configuration: Create appropriate configuration files in the
config/directory - Integration: Ensure proper integration with existing components
- Documentation: Update README.md with new component information
- Management Script: Update
manage-stack.shif needed for health checks
- Test configuration changes locally before submitting
- Provide example configurations for common use cases
- Ensure backward compatibility when possible
- Document any breaking changes
- Security: Use placeholder values with "example" or "your-" prefix for sensitive data
Tip: Run
./scripts/security-check.shto validate your configuration locally before submitting.
When contributing configuration files:
- Never commit real credentials - Use placeholder values only
- Use clear placeholder format:
your-password-example,your-token-example - Comment security-sensitive sections to guide users
- Test security checks locally: Run the CI security validation before submitting
- Update README.md for any user-facing changes
- Include inline comments for complex configurations
- Provide examples for new features
- Update troubleshooting section if applicable
Before submitting a pull request:
- Start the stack:
./manage-stack.sh start - Verify services:
./manage-stack.sh status - Check health endpoints: Test all service endpoints
- Test management script: Verify all commands work correctly
- Clean environment:
./manage-stack.sh cleanupand restart
- All services start successfully
- Health checks pass
- Configuration is valid
- No breaking changes to existing functionality
- Documentation is updated
- Management script works correctly
- External links in documentation are valid (localhost URLs are automatically ignored in CI)
- Security checks pass (no hardcoded credentials or default passwords)
- Branch naming: Use descriptive branch names (e.g.,
feature/add-loki,fix/prometheus-config) - Commit messages: Write clear, descriptive commit messages
- Description: Provide a detailed description of changes
- Testing: Include information about testing performed
- Documentation: Ensure documentation is updated
## Description
Brief description of the changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
- [ ] Tested locally
- [ ] All services start successfully
- [ ] Health checks pass
- [ ] No breaking changes
## Documentation
- [ ] README.md updated
- [ ] Configuration examples provided
- [ ] Comments added where needed
When reporting issues:
- Search existing issues first
- Use the issue template if available
- Provide details:
- OS and Docker version
- Steps to reproduce
- Expected vs actual behavior
- Log outputs
- Configuration details
**Environment:**
- OS: [e.g., Ubuntu 20.04]
- Docker version: [e.g., 20.10.8]
- Docker Compose version: [e.g., 2.0.1] (specify if using `docker-compose` or `docker compose`)
**Description:**
A clear and concise description of the issue.
**Steps to Reproduce:**
1. Step 1
2. Step 2
3. Step 3
**Expected Behavior:**
What you expected to happen.
**Actual Behavior:**
What actually happened.
**Logs:**
Relevant log outputs (use code blocks).
**Additional Context:**
Any other context about the problem.
We welcome contributions in the following areas:
- Additional monitoring dashboards
- Performance optimizations
- Security enhancements
- Documentation improvements
- Additional alerting rules
- Integration examples
- Configuration templates
- Troubleshooting guides
- Code cleanup
- Minor bug fixes
- UI/UX improvements
- Docker Documentation
- Prometheus Documentation
- Grafana Documentation
- OpenTelemetry Documentation
- Jaeger Documentation
- Discussion: Use GitHub Discussions for questions and ideas
- Issues: Use GitHub Issues for bug reports and feature requests
- Pull Requests: Use GitHub PRs for code contributions
By contributing to this project, you agree that your contributions will be licensed under the Apache License 2.0.
Thank you to all contributors who help make this project better!